

import java.util.ArrayList;

public class ReadMens implements Runnable {

    ArrayList <Jogador> jogadores = new ArrayList<Jogador>();
    Fila fila;

    public ReadMens(ArrayList <Jogador> jogadores, Fila fila) {
        this.jogadores = jogadores;
        this.fila = fila;
    }

    public void run() {
        while (true) {

            try {
              
                    for (int i = 0; i < jogadores.size(); i++) {

                        //le mensagem vinda do jogador da vez
                        System.out.println("Esperando mensagem do jogador " + jogadores.get(i).getnome());
                        String mens = jogadores.get(i).getstreamentrada().readUTF();
                        
                        
                        
                        String msg[] = mens.split("-");

                        //atualiza dados do jogador
                        jogadores.get(i).setcc(Integer.parseInt(msg[2]));
                        jogadores.get(i).setpontos(Double.parseDouble(msg[3]));
                        
                        //jogo, nome, cc, pontos
                        if (msg[0].equals(2))//atualiza e continua
                        {
                            fila.insere(mens);
                            
                        } 
                        else if (msg[0].equals("1"))//atualiza e passa a vez
                        {
                            fila.insere(mens);
                            //avisa quem joga
                            int prox = i;
                            prox++;
                            
                            if (prox >= jogadores.size())
                                prox=0;
                            //jogo, posicao, nome, cc, pontos, conectado
                            String texto = "2-" +
                                    jogadores.get(prox).getnome() + "-" +
                                    jogadores.get(prox).getcc() + "-" +
                                    jogadores.get(prox).getpontos();

                            fila.insere(texto);                        
                            
                        }
                        else if (msg[0].equals("3")) //jogador ganhou
                        {
                            fila.insere(mens);                            
                        }
                            
                    }
                    
                    //saiu do for
                    //verifica quem ganhou na rodada
                    double pontos = 0;
                    String venc= "";
                    for (int i = 0; i < jogadores.size(); i++)
                    {
                        if (jogadores.get(i).getpontos() > pontos)
                        {
                            pontos = jogadores.get(i).getpontos();
                            venc = "4-" +
                                    jogadores.get(i).getnome() + "-" +
                                    jogadores.get(i).getcc() + "-" +
                                    jogadores.get(i).getpontos();
                        }
                        
                        
                    }
                    if (pontos > 0)
                        fila.insere(venc);
                    
                
            }
            catch  (Exception e) {
            }
        }
    }
}